package controller.commoncontroller;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import view.commonview.TabbedPane;

/**
 * <b>Implementiert:</b> <code>ActionListener</code> <br>
 * <b>In Verbindung stehende Klassen:</b> <code>TabbedPane
 * </code><br>
 * <br>
 * Zugehoerige Controllerklasse zu den Menueeintraegen <i>Exportieren -->
 * PNG-Datei, JPEG-Datei, GIF-Datei, BMP-Datei</i> und dem Screenshotbutton.
 * Diese Klasse stoesst das <code>TabbedPane</code> an, die aktuelle Schaltung
 * als Bild zu exportieren.
 * 
 * @author Team Locsi
 * 
 */
public class PictureExportListener implements ActionListener {

	private TabbedPane tab;

	/**
	 * Dieser Konstruktor erzeugt ein neues <code>PictureExportListener</code> -
	 * Objekt.
	 * 
	 * @param tab
	 *            <code>TabbedPane</code> - Referenz auf das
	 *            <code>TabbedPane</code>
	 */
	public PictureExportListener(TabbedPane tab) {
		this.tab = tab;
	}

	/**
	 * Diese Methode ruft je nach Format die saveDialog()-Methode von
	 * UtilityDialogs auf, die die Schaltung als Bild im jeweiligen Format
	 * abspeichert
	 */
	@Override
	public void actionPerformed(ActionEvent e) {
		Object object = e.getSource();

		// Wenn der User im Menue den Eintrag "Exportieren als Bild" auswaehlt
		if (object instanceof JMenuItem) {
			char fileMode = ((JMenuItem) object).getText().charAt(0);

			switch (fileMode) {
			case 'P':
				UtilityDialogs.saveDialog(tab, UtilityDialogs.PNG_EXTENSION);
				break;

			case 'G':
				UtilityDialogs.saveDialog(tab, UtilityDialogs.GIF_EXTENSION);
				break;

			case 'J':
				UtilityDialogs.saveDialog(tab, UtilityDialogs.JPG_EXTENSION);
				break;

			case 'B':
				UtilityDialogs.saveDialog(tab, UtilityDialogs.BMP_EXTENSION);
				break;

			default:
				break;
			}
			// Wenn der User den Button "Exportieren als Bild" im ToolPanel
			// auswaehlt
		} else if (object instanceof JButton) {
			String[] fileExtensions = { UtilityDialogs.PNG_EXTENSION,
					UtilityDialogs.GIF_EXTENSION, UtilityDialogs.JPG_EXTENSION,
					UtilityDialogs.BMP_EXTENSION };

			String extension = (String) JOptionPane.showInputDialog(tab,
					"Bitte gewünschtes Format wählen", "Als Bild exportieren",
					JOptionPane.QUESTION_MESSAGE, null, fileExtensions,
					fileExtensions[0]);

			// Wenn der User ein Format auswaehlt, oeffnet sich ein
			// JFileChooser, damit er das Bild im ausgewaehlten Format
			// speichern kann
			if (extension != null) {
				UtilityDialogs.saveDialog(tab, extension);
			}
		}
	}
}